home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_qt.idb / usr / freeware / include / Qt / qmenudata.h.z / qmenudata.h
Encoding:
C/C++ Source or Header  |  1998-10-28  |  5.9 KB  |  198 lines

  1. /****************************************************************************
  2. ** $Id: qmenudata.h,v 2.12 1998/07/03 00:09:51 hanord Exp $
  3. **
  4. ** Definition of QMenuData class
  5. **
  6. ** Created : 941128
  7. **
  8. ** Copyright (C) 1992-1998 Troll Tech AS.  All rights reserved.
  9. **
  10. ** This file is part of Qt Free Edition, version 1.40.
  11. **
  12. ** See the file LICENSE included in the distribution for the usage
  13. ** and distribution terms, or http://www.troll.no/free-license.html.
  14. **
  15. ** IMPORTANT NOTE: You may NOT copy this file or any part of it into
  16. ** your own programs or libraries.
  17. **
  18. ** Please see http://www.troll.no/pricing.html for information about 
  19. ** Qt Professional Edition, which is this same library but with a
  20. ** license which allows creation of commercial/proprietary software.
  21. **
  22. *****************************************************************************/
  23.  
  24. #ifndef QMENUDATA_H
  25. #define QMENUDATA_H
  26.  
  27. #ifndef QT_H
  28. #include "qglobal.h"
  29. #endif // QT_H
  30.  
  31.  
  32. class QPopupMenu;
  33.  
  34. #if defined(INCLUDE_MENUITEM_DEF)
  35.  
  36. #include "qstring.h"
  37. #include "qpixmap.h"
  38. #include "qsignal.h"
  39.  
  40. class QMenuItem                    // internal menu item class
  41. {
  42. friend class QMenuData;
  43. public:
  44.     QMenuItem();
  45.    ~QMenuItem();
  46.  
  47.     int        id()        const    { return ident; }
  48.     const char *text()        const    { return text_data; }
  49.     QPixmap    *pixmap()    const    { return pixmap_data; }
  50.     QPopupMenu *popup()        const    { return popup_menu; }
  51.     int        key()        const    { return accel_key; }
  52.     QSignal    *signal()    const    { return signal_data; }
  53.     bool    isSeparator()    const    { return is_separator; }
  54.     bool    isEnabled()    const    { return is_enabled; }
  55.     bool    isChecked()    const    { return is_checked; }
  56.     bool    isDirty()    const    { return is_dirty; }
  57.  
  58.     void    setText( const char *text ) { text_data = text; }
  59.     void    setDirty( bool d )        { is_dirty = d; }
  60.  
  61. private:
  62.     int        ident;                // item identifier
  63.     QString    text_data;            // item text
  64.     QPixmap    *pixmap_data;            // item pixmap
  65.     QPopupMenu *popup_menu;            // item popup menu
  66.     int        accel_key;            // accelerator key
  67.     QSignal    *signal_data;            // connection
  68.     uint    is_separator : 1;        // separator flag
  69.     uint    is_enabled   : 1;        // disabled flag
  70.     uint    is_checked   : 1;        // checked flag
  71.     uint    is_dirty     : 1;        // dirty (update) flag
  72.  
  73. private:    // Disabled copy constructor and operator=
  74.     QMenuItem( const QMenuItem & );
  75.     QMenuItem &operator=( const QMenuItem & );
  76. };
  77.  
  78. #include "qlist.h"
  79. typedef Q_DECLARE(QListM,QMenuItem)        QMenuItemList;
  80. typedef Q_DECLARE(QListIteratorM,QMenuItem) QMenuItemListIt;
  81.  
  82. #else
  83.  
  84. class QMenuItem;
  85. class QMenuItemList;
  86. class QPixmap;
  87.  
  88. #endif
  89.  
  90.  
  91. class QMenuData                    // menu data class
  92. {
  93. friend class QMenuBar;
  94. friend class QPopupMenu;
  95. public:
  96.     QMenuData();
  97.     virtual ~QMenuData();
  98.  
  99.     uint    count() const;
  100.  
  101.     int        insertItem( const char *text,
  102.                 const QObject *receiver, const char *member,
  103.                 int accel=0 );
  104.     int        insertItem( const QPixmap &pixmap,
  105.                 const QObject *receiver, const char *member,
  106.                 int accel=0 );
  107.     int        insertItem( const QPixmap &pixmap, const char *text,
  108.                 const QObject *receiver, const char *member,
  109.                 int accel=0 );
  110.  
  111.     int        insertItem( const char *text,
  112.                 const QObject *receiver, const char *member,
  113.                 int accel, int id, int index = -1 );
  114.     int        insertItem( const QPixmap &pixmap,
  115.                 const QObject *receiver, const char *member,
  116.                 int accel, int id, int index = -1 );
  117.     int        insertItem( const QPixmap &pixmap, const char *text,
  118.                 const QObject *receiver, const char *member,
  119.                 int accel, int id, int index = -1 );
  120.  
  121.     int        insertItem( const char *text, int id=-1, int index=-1 );
  122.     int        insertItem( const char *text, QPopupMenu *popup,
  123.                 int id=-1, int index=-1 );
  124.     int        insertItem( const QPixmap &pixmap, int id=-1, int index=-1 );
  125.     int        insertItem( const QPixmap &pixmap, QPopupMenu *popup,
  126.                 int id=-1, int index=-1 );
  127.     int        insertItem( const QPixmap &pixmap, const char *text,
  128.                 int id=-1, int index=-1 );
  129.     int        insertItem( const QPixmap &pixmap, const char *text,
  130.                 QPopupMenu *popup,
  131.                 int id=-1, int index=-1 );
  132.  
  133.     void    insertSeparator( int index=-1 );
  134.  
  135.     void    removeItem( int id )        { removeItemAt(indexOf(id)); }
  136.     void    removeItemAt( int index );
  137.     void    clear();
  138.  
  139.     int        accel( int id )        const;
  140.     void    setAccel( int key, int id );
  141.  
  142.     const char *text( int id )        const;
  143.     QPixmap    *pixmap( int id )    const;
  144.     void    changeItem( const char *text, int id );
  145.     void    changeItem( const QPixmap &pixmap, int id );
  146.     void    changeItem( const QPixmap &pixmap, const char *text, int id );
  147.  
  148.     bool    isItemEnabled( int id ) const;
  149.     void    setItemEnabled( int id, bool enable );
  150.  
  151.     bool    isItemChecked( int id ) const;
  152.     void    setItemChecked( int id, bool check );
  153.  
  154.     virtual void updateItem( int id );
  155.  
  156.     int        indexOf( int id )    const;
  157.     int        idAt( int index )    const;
  158.     void    setId( int index, int id );
  159.  
  160.     bool    connectItem( int id,
  161.                  const QObject *receiver, const char *member );
  162.     bool    disconnectItem( int id,
  163.                 const QObject *receiver, const char *member );
  164.  
  165.     QMenuItem  *findItem( int id )    const;
  166.     QMenuItem  *findItem( int id, QMenuData ** parent )    const;
  167.  
  168. protected:
  169.     int           actItem;
  170.     QMenuItemList *mitems;
  171.     QMenuData      *parentMenu;
  172.     uint       isPopupMenu    : 1;
  173.     uint       isMenuBar    : 1;
  174.     uint       badSize    : 1;
  175.     uint       mouseBtDn    : 1;
  176.     uint       mseparator    : 1;
  177.     uint       windowsaltactive : 1;
  178.     virtual void   menuContentsChanged();
  179.     virtual void   menuStateChanged();
  180.     virtual void   menuInsPopup( QPopupMenu * );
  181.     virtual void   menuDelPopup( QPopupMenu * );
  182.  
  183.     QMenuItem * findPopup( QPopupMenu *, int *index = 0 );
  184.  
  185. private:
  186.     int        insertAny( const char *, const QPixmap *, QPopupMenu *,
  187.                int, int );
  188.     void    removePopup( QPopupMenu * );
  189.     void    setAllDirty( bool );
  190.  
  191. private:    //Disabled copy constructor and operator=
  192.     QMenuData( const QMenuData & );
  193.     QMenuData &operator=( const QMenuData & );
  194. };
  195.  
  196.  
  197. #endif // QMENUDATA_H
  198.